package com.block.risk.service.type.item;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.block.risk.model.result.RiskJudgeResult;
import com.block.risk.service.IDefaultItemService;
import org.springframework.stereotype.Service;

@Service
public class XingChenItemService implements IDefaultItemService {
    @Override
    public RiskJudgeResult getControlResult(JSONObject resultDetial) {

        /**
         * 不要白户，无当前逾期 芝麻650➕
         * 网贷结清10笔以上，
         * 还款比例90以上，
         * 近一个月下款一笔以上和近一个月有履约2笔以上，
         *
         * 年龄，23到50，屏蔽，福建 甘肃
         */

        /**
         * 全国650分+前青风控，
         *
         * 不要白户，
         * 订单结清笔数8笔以上。
         * 订单比例95以上，
         * 近6个月逾期M0，
         * 近一个月贷款机构放款笔数2笔以上，
         * 成功扣款笔数大于失败笔数.
         * 贷款行为600以上
         */


        RiskJudgeResult riskJudgeResult = new RiskJudgeResult();
        riskJudgeResult.setPass(false);

        JSONObject currentReportDetail = resultDetial.getJSONObject("current_report_detail");
        JSONObject behaviorReportDetail = resultDetial.getJSONObject("behavior_report_detail");
        JSONObject applyReportDetail = resultDetial.getJSONObject("apply_report_detail");

        if (ObjectUtil.isEmpty(behaviorReportDetail)){
            riskJudgeResult.setResult("行为数据结果为空；【behavior_report_detail】");
            return riskJudgeResult;
        }


        // 订单结清笔数8笔以上
        // 贷款已结清订单数
        String numberSettle = behaviorReportDetail.getString("B22170052");
        if (Integer.valueOf(numberSettle) < 10){
            riskJudgeResult.setResult(StrUtil.format("订单结清笔数10笔以上不通过；【{}】", numberSettle));
            return riskJudgeResult;
        }

        // 订单比例90以上
        // 正常还款订单数占贷款总订单数比例
        String numberRate = behaviorReportDetail.getString("B22170034");
        numberRate = numberRate.replace("%", "");
        if (Integer.valueOf(numberRate) < 90){
            riskJudgeResult.setResult(StrUtil.format("订单比例90以上不通过；【{}】", numberRate));
            return riskJudgeResult;
        }

        // B22170002 近 1个月贷款笔数
        String loanNumber = behaviorReportDetail.getString("B22170002");
        if (Integer.valueOf(loanNumber) < 1){
            riskJudgeResult.setResult(StrUtil.format("近 1个月贷款笔数1笔以上不通过；【{}】", loanNumber));
            return riskJudgeResult;
        }

        // B22170045 近1 个月履约贷 款次数
        String repayNumber = behaviorReportDetail.getString("B22170045");
        if (Integer.valueOf(repayNumber) < 2){
            riskJudgeResult.setResult(StrUtil.format("近1 个月履约贷 款次数2笔以上不通过；【{}】", repayNumber));
            return riskJudgeResult;
        }

        riskJudgeResult.setPass(true);
        riskJudgeResult.setResult("全景分控通过");
        return riskJudgeResult;
    }
}
